malloc Doubles Ruby Memory
https://www.speedshop.co/2017/12/04/malloc-doubles-ruby-memory.html
Ruby
のWebアプリケーションやSidekip
プロセス
は1プロセスあたり多くて1GB付近のメモリを使用する
診断と
デバグ
が難しいのは
フラグメンテーション
フラグメンテーションによる
メモリ
増加はしばしば
メモリリーク
と間違われるが、違いがある
フラグメンテーションによるメモリ増加は
対数的
(
logarithmic
)
メモリリークは
線形
通常、
C extension
の
バグ
で引き起こされる
Rubyではメモリ上でオブジェクトを移動することはできない
Rubyオブジェクトへの生のポインタを保持しているC言語拡張が壊れてしまう可能性があるため
メモリ内でオブジェクトを移動できなければ、断片化は避けられない
これはRubyに限らず、C言語プログラムではよくある問題